﻿#Region "Tibiabot NG Actions"
'1 = rope {x,y,z,1}
'2 = ladder {x,y,z,2}
'3 = upstairs {x,y,z,3}
'4 = downstairs {x,y,z,4}
'5 = hole {x,y,z,5}
'6 = walk {x,y,z,6}
'7 = shovel {x,y,z,7}
'8 = ramp {x,y,z,8}
'9 = delay {seconds,0,0,9}
#End Region

Imports System.IO

Public Class frmInicial

    Private Sub btProcurar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btProcurar.Click
        opfDialog.ShowDialog()
        txtCaminho.Text = IIf(opfDialog.FileName = "OpenFileDialog1", "", opfDialog.FileName)
    End Sub

    Private Sub btConverter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btConverter.Click
        If txtCaminho.Text = "" Then
            MsgBox("Please, choose a valid file!", MsgBoxStyle.Critical, "Error!")
            Exit Sub
        End If
        sub_Conversao(txtCaminho.Text)
    End Sub

    Private Sub frmInicial_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        opfDialog.Filter() = "Tibiabot NG Waypoint Files (*.wpt)|*.wpt"
    End Sub

    Private Sub sub_Conversao(ByVal sArquivoEntrada As String)
        Dim sArquivoSaida As String
        Dim swSaida As StreamWriter
        Dim swEntrada As New StreamReader(sArquivoEntrada)
        '
        Dim sPrimeiraLinha As String
        Dim sSegundaLinha As String
        Dim sTerceiraLinha As String
        Dim sQuartaLinha As String
        '
        Dim sLinhaAnterior As String
        Dim sConvertido As String
        Dim sTextoSaida As String
        '
        sArquivoSaida = ""
        sTextoSaida = ""
        sLinhaAnterior = ""

        Do While Not swEntrada.EndOfStream
            'O arquivo de waypoints do Tibiabot NG é divididor em blocos de 4 linhas
            'X Y Z Ação
            sPrimeiraLinha = swEntrada.ReadLine()
            sSegundaLinha = swEntrada.ReadLine()
            sTerceiraLinha = swEntrada.ReadLine()
            sQuartaLinha = swEntrada.ReadLine()
            '
            'No BWPT, o delay é acompanhado de coordenadas
            'Já no WPT, não
            'Portanto, eu utilizo as coordenadas usadas anteriormente
            If sQuartaLinha = 9 Then
                sConvertido = "Delay (" & sLinhaAnterior & ":" & sPrimeiraLinha & ")"
            Else
                sLinhaAnterior = sPrimeiraLinha & " " & sSegundaLinha & " " & sTerceiraLinha
                sConvertido = "Point (" & sPrimeiraLinha & " " & sSegundaLinha & " " & sTerceiraLinha & ")"
            End If
            '
            sTextoSaida = sTextoSaida & IIf(sTextoSaida = "", "", vbCrLf) & sConvertido
            '
        Loop
        '
        swEntrada.Close()
        '
        'Gambiarra pra pegar o nome e caminho do arquivo sem extenção
        sArquivoSaida = Split(sArquivoEntrada, ".")(UBound(Split(sArquivoEntrada, ".")) - 1) & ".bwpt"
        swSaida = New StreamWriter(sArquivoSaida)
        swSaida.Write(sTextoSaida)
        swSaida.Close()
        '
        MsgBox("Convertion sucesfully completed!", MsgBoxStyle.Information)
        '
    End Sub
End Class
